package everyday;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/7/1 17:12
 * 1004. 最大连续 1 的个数 III
 * https://leetcode.cn/problems/max-consecutive-ones-iii/
 */
public class Solution1004 {

    // 滑动窗口
    public int longestOnes(int[] nums, int k) {
        int n = nums.length;
        int left = 0, right = 0;
        int count = 0;  // 记录 0 的个数
        int ret = 0;  // 记录结果
        while (right < n) {
            // 进窗口
            if (nums[right] == 0) {
                ++count;
            }
            // 出窗口
            while (count > k) {
                if (nums[left] == 0) {
                    --count;
                }
                ++left;
            }
            // 更新结果
            ret = Math.max(ret, right - left + 1);
            ++right;
        }
        return ret;
    }
}
